home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / communic / pccwin.zip / PCC6.DCP < prev    next >
Text File  |  1991-07-22  |  39KB  |  1,543 lines

  1. ;PCContact\Windows
  2. ;Release .96
  3. ;a Windows front end for PCContact
  4. ;by Paul Bonner
  5. ;
  6. ;Enhancements
  7. ;
  8. ;DONE
  9. ;beef up support for iconized operation DONE
  10. ;replace xmodem mail upload with standard ascii transfer DONE
  11. ;add "print" option to mail & message listboxes DONE
  12. ;shorten mail from field to 25 characters--replies go to # anyway DONE
  13. ;rearrange fields on message display--cut subject down to 25 chars DONE
  14. ;strip off "Reply to:" from mail subject's--substitute re: DONE
  15. ;fix new FILE scan--add date function--scan new doesn't work DONE
  16. ;fix tendency to forget account number and password DONE
  17. ;fix script's murderous behavior toward binary messages DONE
  18.  
  19. ;PLANNED
  20. ;add batch delete capability to mail & library screens
  21. ;add ability to send/receive binary files as mail messages
  22. ;add an address book
  23. ;add read/unread indicator to messages
  24. ;activate read/unread for mail
  25. ;break outgoing messages into 35 line chunks
  26. ;invert messages & mail tables before sending so they go out in right order
  27.  
  28.  
  29.  
  30. ;
  31. ;here we initialize variables
  32. $memdir=system(0x0F01,"Memo")
  33. $datadir=system(0x0F01,"data")
  34. $setdir=system(0x0F01,"settings")
  35. set directory settings $setdir
  36. menu
  37. menu end
  38. screen hide
  39. fkeys hide
  40. load "PCC1.DCS" 
  41. set termtitle "PC/C On-Line"
  42. set binarytransfers xmodem
  43.  
  44. table define 11 TEXT "account.inf"
  45. record read 11
  46. set $name @r11
  47. record read 11
  48. set $pass @r11
  49. record read 11
  50. set $phone @r11
  51. record read 11
  52. set %mail num(@r11)
  53. record read 11
  54. set %files num(@r11)
  55. record read 11
  56. set %messages num(@r11)
  57. record read 11
  58. set %send num(@r11)
  59. record read 11
  60. set %upload num(@r11)
  61. record read 11
  62. set $downdir @r11
  63. record read 11
  64. set %sec0 num(@r11)
  65. record read 11
  66. set %sec1 num(@r11)
  67. record read 11
  68. set %sec2 num(@r11)
  69. record read 11
  70. set %sec3 num(@r11)
  71. record read 11
  72. set %sec4 num(@r11)
  73. record read 11
  74. set %sec5 num(@r11)
  75. record read 11
  76. set %sec6 num(@r11)
  77. record read 11
  78. set %sec7 num(@r11)
  79. record read 11
  80. set %sec8 num(@r11)
  81. record read 11
  82. set %lib0 num(@r11)
  83. record read 11
  84. set %lib1 num(@r11)
  85. record read 11
  86. set %lib2 num(@r11)
  87. record read 11
  88. set %lib3 num(@r11)
  89. record read 11
  90. set %lib4 num(@r11)
  91. record read 11
  92. set %oldlist num(@r11)
  93. table close 11
  94. table clear 11
  95.  
  96. ;
  97. ;next comes the opening dialog box
  98. ;
  99. *opener
  100. dialog (,,267,181) 
  101.   picture (76,3,,) "cbar1.bmp"
  102.   set directory data $datadir
  103.   groupbox (6,32,230,46) 'On-line' 
  104.   button (14,43,40,14) default 'AutoServe' perform script, resume
  105.   message (60,46,166,11) 'Automated processing of messages and files.'
  106.   button (14,59,40,14) 'Terminal' dialog cancel, perform interactive, resume
  107.   message (60,62,160,10) 'Standard Compuserve terminal session.'
  108.  
  109.   groupbox (6,85,230,79) 'Off-Line' 
  110.   button (14,96,40,14) 'Setup' perform setup, resume
  111.   message (60,99,150,10) 'Specify account and communication settings.'
  112.   button (14,112,40,14) 'Library' perform library, resume
  113.   message (60,115,147,9) 'Check out PC Contact file library listings.'
  114.   button (14,128,40,14) 'Mail' perform mail, resume
  115.   message (60,131,139,10) 'Read or compose personal mail.'
  116.   button (14,144,40,14) 'Forum' set %i 0, perform forum, resume
  117.   message (60,147,164,13) 'Read or compose public messages.'
  118.   iconbutton (238,112,,) Note "About" perform about, resume
  119.   iconbutton (238,152,,) STOP "Quit" set termtitle "Dynacomm", cancel
  120. dialog end
  121. wait resume
  122. goto opener
  123.  
  124. ;
  125. ;next is the logon routine for the standard terminal session
  126. ;
  127. *interactive
  128. title "CompuServe"
  129. menu cancel
  130. screen show
  131. fkeys show
  132. dial $phone
  133. if error() screen hide, fkeys hide, return
  134. *logloop
  135. send nocr "^c"
  136. when string 1 "ID" when cancel timer, resume
  137. when timer "2" goto logloop
  138. wait resume
  139. when cancel string
  140. send $name
  141. wait string "ord"
  142. wait quiet "1"
  143. perform decode
  144. send $pass
  145. perform encode
  146. cancel
  147.  
  148. ;
  149. ;next is the autoserve logon and session sequence
  150. ;
  151. *AutoServe
  152. dialog cancel
  153. title "PCContact\Windows"
  154. screen show
  155. dial $phone
  156. if error() screen hide, fkeys hide, return
  157. dialog (,8,150,47) 'AutoServe'
  158. set %screen 0
  159.   message (2,7,172,10) "Connecting to Compuserve"
  160.   button (47,25,48,12) '&Hide Session' increment %screen, if %screen > 1 set %screen 0, screen show, dialog update button (1) "Hide Session", else screen hide, dialog update button(1) "Show session"
  161.   button (6,25,35,12) '&Minimize' window minimize
  162.   button (101,25,35,12) '&Quit' goto logoff 
  163. dialog end
  164. *ll2
  165. send nocr "^c"
  166. when string 1 "ID" when cancel timer, resume
  167. when timer "2" goto ll2
  168. wait resume
  169. when cancel string
  170. send $name
  171. wait string "ord"
  172. wait quiet "1"
  173. perform decode
  174. send $pass
  175. perform encode
  176. set %newmail 0
  177. when string "waiting." set %newmail 1
  178. wait string "!"
  179. when cancel string
  180. ;check mail
  181. table define 1 fields char 30 char 38 char 12 file
  182. table load 1 from "outbox.dat" as dynacomm
  183. set %table 1
  184. set %num 0
  185. perform last_mess (%table, %num)
  186. if (%newmail =1 and %mail = 1) or (%num > 0 and %send = 1) send "Go Mail",
  187.    wait string "!"
  188. ;send mail
  189. if %num>0 and %send=1 perform d_update ("Sending mail"), perform send_mail
  190. table close 1
  191. table clear 1
  192. ;get mail
  193. if %newmail=1 and %mail=1 perform d_update("Retrieving mail"), perform get_mail
  194. ;link to pccontact
  195. perform d_update("Linking to PCContact"), send "go pccontact"
  196. when string "(Y or N)" send "N"
  197. wait string "Last"
  198. when cancel string
  199. ;download any files the user has specified
  200. table define 1 fields char 12 int 4 char 10 char 40 int 2 file
  201. table load 1 from "download.dat" as dynacomm
  202. set %num 0
  203. perform last_file (1,%num)
  204. wait quiet "1"
  205. if %files =1 or %num > 0 send "LIB"
  206. wait quiet "1"
  207. if %num>0 perform d_update("Downloading files"), perform download
  208. ;get list of new files
  209. if %files=1 perform d_update("Updating file list"), perform get_flist, perform lib_files
  210. table close 1
  211. table clear 1
  212. ;upload files
  213. table define 2 fields char 40 int 4 char 50 char 80 char 255 int 1 file
  214. table load 2 from "upload.dat" as dynacomm
  215. set %num 0
  216. perform last_file (2,%num)
  217. if %upload = 1 and %num > 0 send "lib", perform d_update("Uploading files"), perform sendfiles
  218. table close 2
  219. table clear 2
  220. ;get new forum messages
  221. if %messages = 1 perform d_update("Getting forum messages"), perform getmess
  222. ;send outgoing messages
  223. table define 1 fields char 2 char 35 char 24 int 2 char 12 char 6 file
  224. table load 1 from "messout.dat" as dynacomm  
  225. set %num 0
  226. perform last_pubmess ("pub0.dcm",%num)
  227. if %num > 0 and %send=1 perform d_update("Sending forum messages"), perform sendmess
  228. table close 1
  229. table clear 1
  230. ;log off
  231. perform d_update("Logging off"), send "off"
  232. wait string "time"
  233. hangup
  234. ;process forum messages offline
  235. perform d_update("Processing forum messages"), perform parse_mess
  236. menu
  237. menu end
  238. *logoff
  239. screen hide
  240. fkeys hide
  241. if connect() hangup
  242. dialog cancel
  243. return
  244.  
  245. ;
  246. ;routine for updating session status dialog box
  247. ;
  248. *d_update ($stat_mess)
  249. if iconic() return
  250. dialog update message 1  $stat_mess
  251. return
  252.  
  253. ;
  254. ;subroutines used to send public forum messages
  255. ;
  256. *sendmess
  257. send "mess"
  258. while %num > 0
  259. begin
  260. record read 1 at %num
  261. if trim(@r1.6) <> "" perform send_rep, goto jumpreply
  262. perform wait_send ("!","compose")
  263. wait string "/EX"
  264. $file=$memdir | @r1.5
  265. file send text $file
  266. set directory data $datadir
  267. wait delay "1"
  268. send ""
  269. send "/EXIT"
  270. perform wait_send ("!","1")
  271. perform wait_send (":",@r1.2)
  272. perform wait_send (":",@r1.3)
  273. perform wait_send ("!",@r1.4)
  274. perform wait_send ("N)","Y")
  275. perform wait_send ("!","")
  276. *jumpreply
  277. set %i %num, perform del_mess
  278. decrement %num
  279. end
  280. send "M"
  281. return
  282.  
  283. *del_mess
  284. table define 9 fields char 2 char 35 char 24 int 2 char 12 char 6 file
  285. table copy %table to 9
  286. record read 9 at %i
  287. if @r9="" return
  288. else set $file @r9.5
  289. file delete $memdir | $file
  290. set directory data $datadir
  291. table clear %table
  292. table copy 9 to %table exclude @r9
  293. table clear 9
  294. return
  295.  
  296. *send_rep
  297. send "reply"
  298. perform wait_send ("#",@r1.6)
  299. wait string "/EX"
  300. $file=$memdir | @r1.5
  301. file send text $file
  302. set directory data $datadir
  303. wait delay "1"
  304. send ""
  305. send "/EXIT"
  306. perform wait_send ("!","1")
  307. perform wait_send ("!","")
  308. return
  309. return
  310.  
  311. ;
  312. ;retrieve public forum messages
  313. ;
  314. *getmess
  315. send ""
  316. When string 1 "OPT", send "options", resume
  317. when string 2 "!" send ""
  318. when string 3 "Browse" send "m"
  319. wait resume
  320. when cancel string
  321. perform wait_send ("!","pause never")
  322. perform wait_send ("!","mess")
  323. perform wait_send (":","S")
  324. wait quiet "1"
  325. $sections=" sec:"
  326. perform bld_sect
  327. if length($sections)=5 file close, return
  328. send "read new" | $sections
  329. collect $junk
  330. file receive text $datadir | "rawmess.dat"
  331. when string "Press <CR> !" resume
  332. wait resume
  333. set directory memo $memdir
  334. set directory data $datadir
  335. file close
  336. return
  337.  
  338. *bld_sect
  339. if %sec0=1 $sections=$sections | "0,"
  340. if %sec1=1 $sections=$sections | "1,"
  341. if %sec2=1 $sections=$sections | "2,"
  342. if %sec3=1 $sections=$sections | "3,"
  343. if %sec4=1 $sections=$sections | "4,"
  344. if %sec5=1 $sections=$sections | "5,"
  345. if %sec6=1 $sections=$sections | "6,"
  346. if %sec7=1 $sections=$sections | "7,"
  347. if %sec8=1 $sections=$sections | "8"
  348. return
  349.  
  350. ;
  351. ;process forum messages
  352. ;
  353. *parse_mess
  354. table define 0 fields char 2 char 6 char 35 char 40 char 15 file
  355. table load 0 from "newmess.dat" as dynacomm
  356. perform last_file (0,0)
  357. set $file $datadir | "rawmess.dat"
  358. set directory memo $memdir
  359. table define 9 text $file
  360. record read 9
  361. *look
  362. if substr(@r9,1,1)= "#" perform found, perform close_tmp, return
  363. record read 9
  364. if eof() table close 9, return
  365. goto look
  366.  
  367. *close_tmp
  368. table close 8
  369. table close 9
  370. table close 0
  371. table clear 8
  372. table clear 9
  373. table clear 0
  374. file delete $datadir | "rawmess.dat"
  375. set directory memo $memdir
  376. return 
  377.  
  378. *found
  379. set %p pos(@r9," ",4)
  380. set $messnum substr(@r9,4,%p-4)
  381. set $messfile trim($messnum," "," ") | ".DCM"
  382. set %p1 pos(@r9,"/",%p)
  383. set $section substr(@r9,%p+2,%p1-1)
  384. table define 8 text $memdir | $messfile
  385. set directory data $datadir
  386. set @r8 trim(@r9," ", " ")
  387. record write 8
  388. record read 9
  389. set @r8 trim(@r9," ", " ")
  390. record write 8
  391. set $date substr(@r9,5,9)
  392. record read 9
  393. set @r8 trim(@r9," ", " ")
  394. record write 8
  395. set %p pos(@r9,"-")
  396. set $subject substr(@r9,%p+1)
  397. record read 9
  398. set $from substr(@r9,5)
  399. set @r8 trim(@r9," ", " ")
  400. record write 8
  401. set @r0.1 "  "
  402. set @r0.2 $messnum
  403. set @r0.3 $subject
  404. set @r0.4 $from
  405. set @r0.5 $section
  406. record write 0
  407. *reader
  408. record read 9
  409. if eof return
  410. if @r9="" goto reader
  411. if substr(@r9,1,12)="Press <CR> !" return
  412. if substr(@r9,1,1)="#" table close 8, goto found
  413. set @r8 trim(@r9," ", " ")
  414. record write 8
  415. goto reader
  416.  
  417.  
  418. ;
  419. ;forum messages dialog box
  420. ;
  421. *forum
  422. ;table define 0 $number $subject $from $section
  423. table define 0 fields char 2 char 6 char 35 char 40 char 15 file
  424. table load 0 from "newmess.dat" as dynacomm
  425. ;table define 1 $to $subject %section $file $repnum
  426. table define 1 fields char 2 char 35 char 24 int 2 char 12 char 6 file
  427. table load 1 from "messout.dat" as dynacomm
  428. table define 5 text "sorts.dat"
  429. set %del1 0
  430. set %del2 0
  431. set %i 0
  432.  
  433. *forum_dialog
  434. set %can 0
  435. set %forward 0
  436. set $repnum ""
  437. set %focus 1
  438. dialog (,,294,184) "Forum Messages"
  439.   listbox (5,41,284,56) 0 %i if %focus=2 perform for_switch1
  440.   listbox (5,115,284,40) 1 if %focus=1 perform for_switch2
  441.   message (5,28,186,10) 'Messages to read:'
  442.   message (6,102,84,11) 'Messages to send:'
  443.  
  444.   button (0,0,42,22) default '&Read' perform readpub, resume
  445.   button (42,0,42,22) '&New' perform compose_mess, resume
  446.   button (84,0,42,22) 'Repl&y' if %focus=1 perform reply_mess, resume
  447.   button (126,0,42,22) '&Print' set %i listbox(%focus), set %table %focus-1, perform printmess, resume
  448.   button (168,0,42,22) '&Forward' if %focus=1 set %forward 1, set %i listbox(1), record read 0 at %i, set $forfile trim(@r0.2) | ".DCM", perform compose_mess, set %forward 0, resume
  449.   button (210,0,42,22) '' ;resume ;"Mark"
  450.   button (252,0,42,22) 'Mark &Del.' set %table %focus-1, set %active %focus, set %i listbox(%focus), perform mark_del
  451.   button (80,159,145,22) 'Re&turn to Menu' perform close_mess, if %can=1 resume, else return
  452.  
  453.  
  454. listbox (202,27,64,44) 5 0 COMBOBOX if %focus= 1 set %table 0, perform sort
  455. message (167,28,34,10) 'Sort by:'
  456. dialog end
  457. wait resume
  458. goto forum_dialog
  459.  
  460. *close_mess
  461. if %del1 > 0 or %del2 > 0 perform ask_del
  462. if %can=1 return 
  463. table close 0
  464. table close 1
  465. table clear 0
  466. table clear 1
  467. table close 5
  468. table clear 5
  469. return
  470.  
  471. ;
  472. ;confirm batch delete of marked messages
  473. ;
  474. *ask_del
  475. %tdel=%del1 + %del2
  476. Dialog (,,180,) "Message Delete"
  477. icon (,12,,) caution
  478. if %tdel > 1 $m1=" messages are ", $m2 = " them now?", else $m1=" message is ", $m2= " it now?"
  479. Message (,12,,) str(%tdel) | $m1 | "marked for deletion."
  480. Message "Okay to delete" | $m2
  481. Button (30,,,11) default "Yes" resume
  482. button (70,,,11) "No" dialog cancel, perform clear_del, return
  483. button (110,,,11) cancel "Cancel" set %can 1, return
  484. dialog end
  485. wait resume
  486. perform batch_del
  487. dialog cancel
  488. return
  489.  
  490. ;
  491. ;activate new listbox
  492. ;
  493. *for_switch1
  494. dialog update listbox(2) table 1, set %focus 1
  495. dialog update button 3 "Repl&y"
  496. dialog update button 5 "&Forward"
  497. return
  498.  
  499. *for_switch2
  500. dialog update listbox(1) table 0, set %focus 2
  501. dialog update button 3 ""
  502. dialog update button 5 ""
  503. return
  504.  
  505. ;
  506. ;message handling routines
  507. ;
  508. *printmess
  509. record read %table at %i
  510. if %table=0 set $file trim(@r0.2) | ".DCM",
  511. else set $file @r1.5
  512. print file $memdir | $file
  513. set directory data $datadir
  514. return
  515.  
  516.  
  517. *readpub
  518. set %i listbox(%focus) 
  519. record read %focus-1 at %i 
  520. if %focus=1 set $file trim(@r0.2) | ".DCM", set memotitle trim(@r0.4) | "-" | trim(@r0.3) | "-" | $file, else
  521. if @r1 = "" resume, else set $file @r1. 5, set memotitle trim(@r1.2) | "-" | trim(@r1.3) | "-" | $file 
  522. dialog cancel
  523. perform editor ($file)
  524. return
  525.  
  526.  
  527. *reply_mess
  528. set %i listbox(1)
  529. record read 0 at %i
  530. set $subject @r0.3
  531. set $to @r0.4
  532. set $section @r0.5
  533. set %pos pos($section,"/")
  534. set $section substr($section,1,%pos-1)
  535. set %section num($section)
  536. set $repnum @r0.2
  537. dialog cancel
  538. perform compose_mess
  539. set $repnum "" 
  540. return
  541.  
  542.  
  543. *sort
  544. set %sort listbox(3)
  545. if %sort=0 return
  546. increment %sort
  547. table sort %table %sort
  548. dialog update listbox %focus table %table 0
  549. dialog update listbox 3 table 5 0
  550. return
  551.  
  552.  
  553. *compose_mess
  554. set %num 0
  555. $file="pub000.dcm"  
  556. perform last_pubmess ($file, %num)
  557. increment %num
  558. $file="pub" | str(%num) | ".dcm"  
  559. if %forward = 1 set $old_file $forfile, else set $old_file "new.dcm"
  560. file copy $memdir | $old_file $memdir | $file
  561. set directory data $datadir
  562. if $repnum<> "" goto skip1
  563. set $to "Enter addressee here"
  564. set $subject "Enter subject here"
  565. set %section 0
  566. *skip1
  567. set %cancel 0
  568. perform address_mess ($to, $subject, %section)
  569. if %cancel=1 set %cancel 0, return
  570. set memotitle $to | "-" | $subject | "-" | $file 
  571. dialog cancel
  572. perform editor ($file)
  573. return
  574.  
  575. ;
  576. ;find last forum message
  577. ;
  578. *last_pubmess ($file, %num)
  579.  record read 1 at 0
  580.    while not eof
  581.    begin     
  582.    record read 1
  583.    end
  584.   $file=@r1.5
  585.   $file=trim($file,"pub",".DCM")
  586.    %num=num($file)
  587.    return
  588.  
  589. *address_mess ($to, $subject, %section)
  590. table define 9 text "section.dat"
  591.  dialog (,,216,103) 'Post Message'
  592.   message (13,9,27,10) 'Section:'
  593.   listbox (44,7,99,62) 9 %section COMBOBOX 
  594.   message (10,32,30,10) 'Post for:'
  595.   edittext (44,31,115,12) 115 ''  trim($to)
  596.   button (166,30,40,14) 'Sysop' dialog update edittext(1) "76000,21"
  597.   message (12,53,29,10) 'Subject:' 
  598.   edittext (44,52,115,12) 115 ''  $subject limit 24
  599.   button (42,79,40,14) default 'Okay' resume
  600.   button (132,78,40,14) cancel 'Cancel' dialog cancel, set %cancel 1, return
  601. dialog end
  602. wait resume
  603. set $to edittext (1), set @r1.2 $to
  604. set $subject edittext (2), set @r1.3 $subject
  605. set @r1.4 str(listbox(1))
  606. set @r1.5 $file
  607. set @r1.6 $repnum
  608. record write 1
  609. dialog cancel
  610. return
  611.  
  612. ;
  613. ;message deletion routines
  614. ;
  615.  
  616. ;*del_mess
  617. ;goto mark_del
  618. ;return
  619.  
  620. *clear_del
  621. set %loopnum 0
  622. perform cd2
  623. set %loopnum 1
  624. perform cd2
  625. return
  626.  
  627. *cd2
  628.  
  629.    if %loopnum=0 and %del1 < 1 return
  630.    if %loopnum=1 and %del2 <1 return
  631.    set %i 0 
  632.    record read %loopnum at %i
  633.    while not eof
  634.    begin     
  635.    record read %loopnum at %i
  636.    if %loopnum=0 and @r0.1="D " set @r0.1 "  ", record write 0 at %i
  637.    if %loopnum=1 and @r1.1="D " set @r1.1 "  ", record write 1 at %i 
  638.    increment %i
  639.    end
  640.    return
  641.  
  642.  
  643. *batch_del
  644. %loopnum=0
  645. perform bd1
  646. %loopnum=1 
  647. perform bd1
  648. return
  649.  
  650. *bd1
  651.    if %loopnum=0 and %del1=0 return
  652.    if %loopnum=1 and %del2=0 return
  653.    set %i 0 
  654.    record read %loopnum at %i
  655.    while not eof
  656.    begin     
  657.    record read %loopnum
  658.    increment %i
  659.    if @r(%loopnum).1="D " perform del_one
  660.    end    
  661.    perform bd2
  662.    dialog cancel
  663.    return
  664.  
  665. *bd2
  666.    set $exclude "D "
  667.    table define 9 fields char 2 char 6 char 35 char 40 char 15 file
  668.    table copy %loopnum to 9 
  669.    table clear %loopnum    
  670.    table copy 9 to %loopnum EXCLUDE $exclude
  671.    table clear 9
  672.    return
  673.  
  674. *del_one
  675. if %loopnum=0 set $file trim(@r0.2) | ".DCM" , else set $file trim(@r1.5) 
  676.  ; dialog "Batch Delete"
  677.  ; message "loopnum " | str(%loopnum)
  678.  ; message "file " | $file
  679.  ; message "memdir" | $memdir  
  680.  ; message "Deleting " | $memdir | $file | "."
  681.  ; button "Ok" resume
  682.  ; button "cancel" dialog cancel, cancel
  683.  ; dialog end
  684.  ; wait resume
  685. ;dialog cancel
  686. file delete $memdir | $file
  687. set directory data $datadir
  688. return
  689.  
  690.  
  691. *mark_del
  692. record read %table at %i
  693. switch str(%table)
  694. case str(0)
  695. if @r0.1="D " set @r0.1 "  ", decrement %del1, else set @r0.1 "D ", increment %del1
  696. leave
  697. case str(1)
  698. if @r1.1="D " set @r1.1 "  ", decrement %del2, else set @r1.1 "D ", increment %del2
  699. leave
  700. switch end
  701. record write %table at %i
  702. increment %i
  703. dialog update listbox(%active) table %table %i
  704. return
  705.  
  706. ;
  707. ;routines for uploading files to pccontact
  708. ;
  709.  
  710. *sendfiles
  711. perform wait_send ("!","0")
  712. while %num > 0
  713. begin
  714. record read 2 at %num
  715. perform wait_send ("!","UPLOAD /prot:xmodem")
  716. set $fname @r2.1,
  717. perform trim_name
  718. perform wait_send ("name:",$fname)
  719. when string 1 "You must" goto backdoor
  720. when string 2 "choice" resume
  721. when string 3 "Replace" send "n", goto backdoor
  722. wait resume
  723. send @r2.6
  724. wait string "plete"
  725. set binarytransfers xmodem
  726. file send binary @r2.1
  727. set directory data $datadir
  728. send ""
  729. when string 1 "<CR>" send ""
  730. when string 2 "!" resume
  731. when string 3 "/EXIT" resume
  732. when string 4 "Resuming" when cancel string, goto backdoor
  733. wait resume
  734. when cancel string
  735. $tmp=@r2.5
  736. while length($tmp)>50
  737. begin
  738. $tmp1=substr($tmp,1,50)
  739. $tmp=substr($tmp,51,)
  740. %pos=pos($tmp," ")
  741. $tmp1=$tmp1 | substr($tmp,1,%pos)
  742. $tmp=substr($tmp,%pos)
  743. send trim($tmp1," "," ")
  744. wait delay "1"
  745. end
  746. send $tmp
  747. send "/EXIT"
  748. perform wait_send (":",@r2.4)
  749. perform wait_send ("ished",@r2.3)
  750. perform wait_send ("okay","Y")
  751. perform wait_send ("CR","")
  752. set %table 2
  753. set %i %num
  754. perform del_lib
  755. *backdoor
  756. decrement %num
  757. end
  758. return
  759.  
  760. *trim_name
  761. %p1=pos($fname,"\")
  762. if %p1=0 return
  763. increment %p1
  764. $fname=substr($fname,%p1,40-%p1)
  765. goto trim_name
  766.  
  767.  
  768. ;
  769. ;routine for downloading files from pccontact
  770. ;
  771.  
  772. *download
  773. while %num > 0
  774. begin
  775. ;table define 1 fields name size date desc  lib
  776. record read 1 at %num
  777. set $fname trim(@r1.1)
  778. set $lib @r1.5
  779. send $lib
  780. perform wait_send ("!","DOWN "| $fname | " /prot:xmodem")
  781. wait string "<CR>"
  782. set binarytransfers xmodem
  783. file receive binary $downdir | $fname 
  784. set directory data $datadir
  785. send ""
  786. when string 1 "<CR>" send ""
  787. when string 2 "choice" send "lib", resume
  788. wait resume
  789. when cancel string
  790. set %table 1
  791. set %i %num
  792. perform del_lib
  793. decrement %num
  794. end
  795. return
  796.  
  797. ;
  798. ;routines for retrieving new file lists
  799. ;
  800.  
  801. *get_flist
  802. ;get number of days since last file listing was retrieved
  803. set %secs1 seconds(,date())
  804. if %oldlist=0 %oldlist=-1544336896
  805. set %secs2 %oldlist + 86400
  806. %days=(%secs1-%secs2)/(3600*24)
  807. if %days < 0 %days=1
  808. $days = str(%days)
  809. ;now we start the scan
  810. set %lib 0
  811. while %lib < 5
  812. begin
  813. when quiet "2" send "", resume
  814. when string "!" resume
  815. wait resume
  816. when cancel 
  817. if %lib=0 %check=%lib0, 
  818. else if %lib=1 %check=%lib1, 
  819. else if %lib=2 %check=%lib2,
  820. else if %lib=3 %check=%lib3,
  821. else if %lib=4 %check=%lib4
  822. if %check=0 send "", goto skiplib
  823. send "lib "|str(%lib)
  824. wait quiet "2"
  825. CLEAR
  826. send "scan days:" | $days |" /short"
  827. collect $junk
  828. collect $junk
  829. if substr($junk,1,2) <> "No" perform get_em, send ""
  830. ;perform wait_send ("!","m")
  831. *skiplib
  832. increment %lib
  833. end
  834. table close 0
  835. table clear 0
  836. return
  837.  
  838. *get_em
  839. wait quiet "1"
  840. selection buffer
  841. selection save $datadir | 
  842. "Lib" | str(%lib) |".DAT"
  843. set directory memo $memdir
  844. return
  845.  
  846. *lib_files
  847. set %lib 0 
  848. table define 0 fields char 12  int 4 char 10 char 40 int 2 file
  849. table load 0 from "library.dat" as dynacomm
  850. set %count 0
  851. perform last_file (0,%count)
  852. while %lib < 5
  853. begin
  854. table define 9 text "Lib" | str(%lib) |".DAT"
  855. record read 9 at 0
  856. set $junk @r9
  857. record read 9
  858. set $junk @r9
  859. record read 9
  860. set $junk @r9
  861. perform files_loop
  862. table close 9
  863. table clear 9
  864. file delete "Lib" | str(%lib) |".DAT"
  865. increment %lib
  866. end
  867. set %oldlist seconds(,date())
  868. perform saveall
  869. return
  870.  
  871. *files_loop
  872. record read 9
  873. if eof return
  874. set $junk @r9
  875. if substr($junk,1,1)=" " or $junk="" or substr($junk,1,4)="scan"  or substr($junk,1,4)="Pres" goto files_loop
  876. parse $junk $fname "/" $junk
  877. parse $junk $junk1 "   " $junk
  878. parse $junk $size "K" $junk
  879. set $date " " |  substr($junk, 2,9)
  880. set $des substr($junk,11,40)
  881. set @r0.1 $fname
  882. set @r0.5 str(%lib)
  883. set @r0.2 $size
  884. set @r0.3 $date
  885. set @r0.4 $des
  886. ;set @r0.6 str(seconds(,date()))
  887. record write 0
  888. goto files_loop
  889.  
  890. ;
  891. ;routine for sending email
  892. ;
  893.  
  894. *send_mail
  895. while %num > 0
  896. begin
  897. record read 1 at %num
  898. set $to @r1.1
  899. set $subject @r1.2
  900. set $file @r1.3
  901. send "compose"
  902. wait string "done)"
  903. file send text $file
  904. set directory data $datadir
  905. when quiet "1" send "", send "/EXIT"
  906. when string "!" send "1", resume
  907. wait resume
  908. when cancel 
  909. wait delay "1"
  910. send $to
  911. when string "Invalid" send "", send "", decrement %num, when cancel string, goto endloop
  912. perform wait_send (":", $subject)
  913. perform wait_send ("!", "y")
  914. perform wait_send ("!", "")
  915. set %i %num, set %table 1
  916. perform del_let
  917. decrement %num
  918. *endloop
  919. end
  920. return
  921.  
  922. ;
  923. ;routines for retrieving email
  924. ;
  925.  
  926. *name_new_mail
  927. increment %count
  928. set $file "LET" | str(%count) | ".DCM"
  929. if exists($memdir|$file) goto name_new_mail
  930. set directory data $datadir
  931. return
  932.  
  933. *get_mail
  934. table define 0 fields char 1 char 1 char 25 char 12 char 9 char 25 char 12 file
  935. table load 0 from "mail.dat" as dynacomm
  936. set %count 0
  937. perform last_mess (0,%count)
  938. set $file ""
  939. perform name_new_mail
  940. send "set page no"
  941. perform wait_send ("!", "Read")
  942. when string 1 "ALL" perform wait_send ("!", "0"), resume
  943. when string 2 "e:" resume
  944. wait resume
  945. when cancel string
  946. file receive text $file
  947. perform get_let
  948. *next_letter
  949. perform name_new_mail
  950. file receive text $file
  951. set %cancel 0
  952. perform get_let
  953. if %cancel=1 return
  954. goto next_letter
  955.  
  956. *get_let
  957. set %binmess 0
  958. when string 1 "No mail" perform end_lets, return
  959. when string 2 "CompuServe Mail  Main Menu" perform end_lets, return
  960. when string 3 "is Binary" set %binmess 1
  961. when quiet "2" send ""
  962. wait string "m:"
  963. collect $from
  964. collect $subject
  965. wait string "<CR>"
  966. when cancel 
  967. file close
  968. set @r0.1 " " ; set to "*" to denote unread 
  969. set @r0.2 " " ; set to ">" to denote incoming 
  970. set $sname $from
  971. set %p pos($sname,"[")
  972. set $sname substr($sname,1,%p-1)
  973. set $sname substr($sname,1,25)
  974. set @r0.3 trim($sname," "," ")
  975. set $num $from
  976. set %p1 pos($num,"]")
  977. increment %p
  978. set @r0.4 substr($num,%p,%p1-%p)
  979. set $date date()
  980. set @r0.5 $date
  981. %cpos=pos($subject,":")
  982. $subject=substr($subject,%cpos+2,25)
  983. *ch
  984. if substr($subject,1,1)=" " $subject = substr($subject,2), goto ch
  985. set @r0.6 $subject
  986. set @r0.7 $file
  987. record write 0
  988. if %binmess=0 send "Del", else send ""
  989. return
  990.  
  991. *end_lets
  992. file close
  993. file delete $memdir | $file
  994. set directory data $datadir
  995. table close 0
  996. table clear 0
  997. set %cancel 1
  998. return
  999.  
  1000.  
  1001. ;
  1002. ;standard wait prompt/send response routine
  1003. ;
  1004.  
  1005. *wait_send ($prompt,$response)
  1006. wait string $prompt
  1007. send $response
  1008. return
  1009.  
  1010. ;
  1011. ;dialog for composing autoserve script
  1012. ;
  1013.  
  1014. *script
  1015. dialog (,,190,123) 'AutoServe Script'
  1016.   checkbox (17,15,81,11) %mail 'Collect new &mail.' 
  1017.   checkbox (17,32,105,11) %messages 'Collect new &forum messages.' 
  1018.   checkbox (17,49,107,11) %send "&Send mail and messages."
  1019.   checkbox (17,66,107,11) %files '&Collect a list of new files.' 
  1020.   checkbox (17,83,180,11) %upload "Se&nd files to PCContact files library."
  1021.   button (30,104,40,14) default '&Okay' resume
  1022.   button (80,104,40,14) cancel 'Cance&l' dialog cancel, return
  1023.   button (130,104,40,14) "O&ptions" perform script_opt, goto script
  1024. dialog end
  1025. wait resume
  1026. %mail=checkbox(1)
  1027. %messages=checkbox(2)
  1028. %files=checkbox(4)
  1029. %send=checkbox(3)
  1030. %upload=checkbox(5)
  1031. perform saveall
  1032. perform autoserve
  1033. return
  1034.  
  1035.  
  1036. *script_opt
  1037. dialog (,,182,180) 'Script Options'
  1038. message (19,2,149,10) 'Select sections and libraries to check.'
  1039. groupbox (5,11,171,79) 'Forum Sections' 
  1040.   checkbox (14,22,76,12) %sec0 'General Information' 
  1041.   checkbox (14,35,75,12) %sec1 'Letters/Comments' 
  1042.   checkbox (14,48,75,12) %sec2 'Columns/Opinion' 
  1043.   checkbox (14,61,50,12) %sec3 'NEW!' 
  1044.   checkbox (14,74,70,12) %sec4 'Prime Time' 
  1045.   checkbox (96,22,50,12) %sec5 'Features' 
  1046.   checkbox (96,35,50,12) %sec6 'HELP' 
  1047.   checkbox (96,48,77,12) %sec7 "Consumer's Edge" 
  1048.   checkbox (96,61,64,12) %sec8 "Off the Record"
  1049. groupbox (5,94,171,55) 'File Libraries' 
  1050.   checkbox (14,106,80,12) %lib0 'General / Forum Info.' 
  1051.   checkbox (14,119,76,12) %lib1 'Hot Tips/Secrets' 
  1052.   checkbox (14,132,75,12) %lib2 'Templates/Macros' 
  1053.   checkbox (96,106,77,12) %lib3 'Utilities/Misc.' 
  1054.   checkbox (96,119,78,12) %lib4 'Files by Month'
  1055.  
  1056. button (40,156,40,14) default '&Okay' resume
  1057. button (101,156,40,14) cancel 'Cance&l' dialog cancel, return
  1058. dialog end
  1059. wait resume
  1060. set %sec0 checkbox(1)
  1061. set %sec1 checkbox(2)
  1062. set %sec2 checkbox(3)
  1063. set %sec3 checkbox(4)
  1064. set %sec4 checkbox(5)
  1065. set %sec5 checkbox(6)
  1066. set %sec6 checkbox(7)
  1067. set %sec7 checkbox(8)
  1068. set %sec8 checkbox(9)
  1069. set %lib0 checkbox(10)
  1070. set %lib1 checkbox(11)
  1071. set %lib2 checkbox(12)
  1072. set %lib3 checkbox(13)
  1073. set %lib4 checkbox(14)
  1074. dialog cancel
  1075. return
  1076.  
  1077. ;
  1078. ;email dialog box
  1079. ;
  1080.  
  1081. *mail
  1082. ;define desk with read to/from name number date sub filename
  1083. table define 0 fields char 1 char 1 char 25 char 12 char 9 char 25 char 12 file
  1084. table load 0 from "mail.dat" as dynacomm
  1085. ;define outbox with name or number  subject  filename
  1086. table define 1 fields char 30 char 38 char 12 file
  1087. table load 1 from "outbox.dat" as dynacomm
  1088. set %i 0
  1089.  
  1090. *mail_dialog
  1091. set %forward 0
  1092. set $repnum ""
  1093. set %focus 1
  1094. dialog (,,294,184) "Personal Mail"
  1095.   listbox (5,41,284,56) 0 %i if %focus=2 perform switch1
  1096.   listbox (5,115,284,40) 1 if %focus=1 perform switch2
  1097.   message (5,28,186,10) 'Mail to read:'
  1098.   message (6,102,84,11) 'Mail to send:'
  1099.  
  1100.   button (0,0,42,22) default '&Read' set %i listbox(%focus), set %table %focus-1, perform read, resume
  1101.   button (42,0,42,22) '&New' perform compose, resume
  1102.   button (84,0,42,22) 'Repl&y' if %focus=1 perform reply, resume
  1103.   button (126,0,42,22) '&Print' set %i listbox(%focus), set %table %focus-1, perform printmail, resume
  1104.   button (168,0,42,22) '&Forward' if %focus=1 perform forward, resume
  1105.   button (210,0,42,22) "" ;resume '&Attach
  1106.   button (252,0,42,22) '&Erase' set %i listbox(%focus), set %table %focus-1, perform del_let, set %active %table, perform up_list
  1107. ;iconbutton (8,158,,) "_Note" "&Mark (6)"     
  1108. ;iconbutton (240,158,,) "_caution" "&Clear Marks"
  1109. button (80,159,145,22) 'Re&turn to Menu' table close 0, table close 1, table clear 0, table clear 1, return
  1110. ;listbox (202,27,64,24) 0 COMBOBOX 
  1111. ;message (167,28,34,10) 'Sort by:'
  1112. dialog end
  1113. wait resume
  1114. goto mail_dialog
  1115.  
  1116. *switch1
  1117. dialog update listbox(2) table 1
  1118. dialog update button 6 ""
  1119. dialog update button 3 "Repl&y"
  1120. dialog update button 5 "&Forward"
  1121. set %focus 1
  1122. return
  1123.  
  1124.  
  1125. *switch2
  1126. dialog update listbox(1) table 0
  1127. dialog update button 6 "" ; "&Attach"
  1128. dialog update button 3 ""
  1129. dialog update button 5 ""
  1130. set %focus 2
  1131. return
  1132.  
  1133. ;
  1134. ;mail handling routines
  1135. ;
  1136.  
  1137. *printmail
  1138. record read %table at %i
  1139. if %table=0 set $file @r0.7, else set $file @r1.3
  1140. print file $memdir| $file 
  1141. set directory data $datadir
  1142. return
  1143.  
  1144. *forward
  1145. set %i listbox(1)
  1146. record read 0 at %i
  1147. set $old_file @r0.7
  1148. set $subject @r0.5
  1149. set $add_title "Forward Message"
  1150. goto ready_add
  1151.  
  1152. *compose
  1153. set $old_file "new.dcm"
  1154. set $subject "Subject of message"
  1155. set $add_title "Compose Mail"
  1156.  
  1157. *ready_add
  1158. set $to ""
  1159. set %cancel 0
  1160. perform address ($to, $subject, $add_title, %cancel)
  1161. if %cancel=1 return
  1162. perform create_mess ($to, $subject, $old_file)
  1163. return
  1164.  
  1165. *address ($to, $subject, $add_title, %cancel)
  1166. dialog (116,73,146,83) $add_title
  1167.   edittext (19,12,101,12) 101 ''  "Addressee's name or ID #."
  1168.   edittext (18,33,103,12) 103 ''  $subject
  1169.   button (11,54,40,14) default 'Okay' resume
  1170.   button (92,55,40,14) cancel 'Cancel' dialog cancel, set %cancel 1, return
  1171. dialog end
  1172. wait resume
  1173.   set $To edittext(1)
  1174.   set $subject edittext(2)
  1175. dialog cancel
  1176. return
  1177.  
  1178.  
  1179. *del_let
  1180. if %table=0 table define 9 fields char 1 char 1 char 25 char 12 char 9 char 25 char 12 file,
  1181. else table define 9 fields char 30 char 38 char 12 file
  1182. table copy %table to 9
  1183. record read 9 at %i
  1184. if %table=0 set $file @r9.7, else set $file @r9.3
  1185. file delete $memdir | $file
  1186. set directory data $datadir
  1187. table clear %table
  1188. table copy 9 to %table exclude @r9
  1189. table clear 9
  1190. return
  1191.  
  1192. *up_list
  1193. if %active=0 dialog update listbox 1 table 0  %i, dialog update listbox 2 table 1
  1194. else dialog update listbox 1 table 0, dialog update listbox 2 table 1 %i
  1195. return
  1196.  
  1197. *up_flist
  1198. if %active=0 dialog update listbox 1 table 0  %i, dialog update listbox 2 table 1, dialog update listbox 3 table 2
  1199. else if %active=1 dialog update listbox 1 table 0, dialog update listbox 2 table 1 %i, dialog update listbox 3 table 2
  1200. else dialog update listbox 1 table 0, dialog update listbox 2 table 1, dialog update listbox 3 table 2  %i
  1201. return
  1202.  
  1203. *read
  1204. record read %table at %i
  1205. if %table=0 set $file @r0.7, else set $file @r1.3
  1206. dialog cancel
  1207. set memotitle $file 
  1208. perform editor ($file)
  1209. return
  1210.  
  1211. *editor ($file)
  1212. menu cancel
  1213. menu
  1214. popup "&File" System 1
  1215. popup "&Edit" System 2
  1216. popup "&Search" System 3
  1217. menu end
  1218. wait edit $memdir | $file 
  1219. set directory data $datadir
  1220. menu
  1221. menu end
  1222. return
  1223.  
  1224.  
  1225. *create_mess ($to,$subject,$old_file)
  1226. set %count 0
  1227. perform last_mess (1,%count)
  1228. set $file "OUT" | str(%count+1) | ".DCM"
  1229. file copy $memdir | $old_file $memdir | $file
  1230. set directory data $datadir
  1231. set @r1.1 $to
  1232. set @r1.2 $subject
  1233. set @r1.3 $file 
  1234. record write 1
  1235. set memotitle $to | "-" | $subject | "-" | $file 
  1236. dialog cancel
  1237. perform editor ($file)
  1238. return
  1239.  
  1240. *reply
  1241. record read 0 at listbox(1)
  1242. if @r0.7="" return
  1243. set %count 0
  1244. perform last_mess (1,%count)
  1245. set @r1.1 @r0.4
  1246. set @r1.2 @r0.6
  1247. set $file "OUT" | str(%count+1) | ".DCM"
  1248. set @r1.3 $file
  1249. record write 1
  1250. ;dialog
  1251. ;message $memdir | "new.dcm"
  1252. ;button "okay" resume
  1253. ;dialog end
  1254. ;wait resume
  1255. file copy $memdir | "new.dcm" $memdir | $file
  1256. set directory data $datadir
  1257. set memotitle trim(@r1.1) | "-" | trim(@r1.2) | "-" | $file 
  1258. dialog cancel
  1259. perform editor ($file)
  1260. return
  1261.  
  1262. *last_mess (%table, %num)
  1263.    record read %table at 0
  1264.    while not eof
  1265.    begin     
  1266.    record read %table
  1267.    end
  1268.    if %table=0 $file=@r0.7, $file=trim($file,"LET",".DCM"),
  1269.    else $file=@r1.3, $file=trim($file,"OUT",".DCM")
  1270.    %num=num($file)
  1271.    return
  1272.  
  1273. *last_file (%table, %num)
  1274.    record read %table at 0
  1275.    while not eof
  1276.    begin     
  1277.    record read %table
  1278.    increment %num
  1279.    end
  1280.    return
  1281.  
  1282. ;
  1283. ;file library dialog
  1284. ;
  1285.  
  1286. *library
  1287. ;table define 0 fields name size date desc  lib
  1288. table define 0 fields char 12 int 4 char 10 char 40 int 2 file
  1289. table load 0 from "library.dat" as dynacomm
  1290. table define 1 fields char 12 int 4 char 10 char 40 int 2 file
  1291. table load 1 from "download.dat" as dynacomm
  1292. ;table define 2 fields name size title key des type
  1293. table define 2 fields char 40 int 4 char 50 char 80 char 255 int 1 file
  1294. table load 2 from "upload.dat" as dynacomm
  1295. set %i 0
  1296. set %focus 1
  1297.  
  1298. dialog (,,294,188) 'PC Contact Library'
  1299.  
  1300.  button (0,0,98,16) default '&Download File' if %focus=1 set %i listbox(1), perform move_down, set %active 0, perform up_flist
  1301.  button (98,0,98,16)  '&Upload a File' set %focus 3, set %table 2, perform up_load, set %active 2, resume
  1302.  button (196,0,98,16) '&Cut' set %i listbox(%focus), set %table %focus-1, perform del_lib, set %active %table, perform up_flist
  1303.  
  1304. Message (4,20,,) 'Files Available' 
  1305.   listbox (4,32,286,60) 0 %i if %focus <> 1 perform foc1
  1306. Message (4,88,,)  'Download list' 
  1307.   listbox (4,100,286,24) 1 if %focus <> 2 perform foc2
  1308. Message (4,128,,) 'Upload list' 
  1309.   listbox (4,140,286,24) 2 if %focus <> 3 perform foc3
  1310.  
  1311. button (80,167,145,16) 'Re&turn to Menu' dialog cancel, table close 0, table close 1, table clear 0, table clear 1, return
  1312. dialog end
  1313. wait resume
  1314. dialog cancel
  1315. table close 0
  1316. table close 1
  1317. table close 2
  1318. table close 9
  1319. goto library
  1320.  
  1321. *foc1
  1322. dialog update button(1) "&Download File"
  1323. if %focus=2 dialog update listbox(2) table 1, set %focus 1, else dialog update listbox(3) table 2, set %focus 1
  1324. return
  1325.  
  1326. *foc2
  1327. dialog update button(1) ""
  1328. if %focus=1 dialog update listbox(1) table 0, set %focus 2, else dialog update listbox(3) table 2, set %focus 2
  1329. return
  1330.  
  1331. *foc3
  1332. dialog update button(1) ""
  1333. if %focus=2 dialog update listbox(2) table 1, set %focus 3, else dialog update listbox(1) table 0, set %focus 3
  1334. return 
  1335.  
  1336. ;
  1337. ;file upload dialog box
  1338. ;
  1339.  
  1340. *up_load
  1341. dialog cancel
  1342. File openname $upfile TYPE "*.*" Default "Select file to upload!"
  1343. if error() return
  1344. if $upfile = "Select file to upload!" return
  1345. set directory data $datadir
  1346. $title='Enter a title for this file'
  1347. $des='Enter description of file'
  1348. $key='Enter keywords separated by spaces'
  1349. *upload_dlg
  1350. dialog (,,244,159) "Upload: " | $upfile
  1351. table define 9 text "types.dat"
  1352. message (4,8,,) 'Select transfer type:' 
  1353. listbox (74,6,,58) 9 1 combobox 
  1354.   message (4,36,19,10) 'Title:'
  1355.    edittext (24,33,208,12)  ''  $title LIMIT 50
  1356.   edittext (10,58,210, 44)  ''  $des 
  1357.  edittext (39,115,190,12)  ''  $key
  1358.   message (3,116,34,10) "Keywords:" 
  1359.   button (46,138,40,14) default 'Okay' resume
  1360.   button (175,137,40,14) cancel 'Cancel' dialog cancel, return
  1361. dialog end
  1362. wait resume
  1363. set $title edittext(1)
  1364. if $title='Enter a title for this file' goto upload_dlg
  1365. set $des edittext(2)
  1366. if $des= 'Enter description of file' set $des ""
  1367. set $key edittext(3)
  1368. if $key = 'Enter keywords separated by spaces' set $key ""
  1369. set %type listbox(1) + 1
  1370. set %table 2
  1371. set %count 0
  1372. perform last_file (%table,%count)
  1373. set @r2.1 $upfile
  1374. set %size filesize($upfile)
  1375. set %size int(%size/1024)
  1376. if %size=0 %size=1
  1377. set @r2.2 str(%size)
  1378. set @r2.3 " " | $title
  1379. set @r2.4 $key
  1380. set @r2.5 $des
  1381. set @r2.6 str(%type)
  1382. record write 2 
  1383. dialog cancel
  1384. return
  1385.  
  1386. ;
  1387. ;file list handling routines
  1388. ;
  1389.  
  1390. *move_down
  1391. perform last_file (1,0)
  1392. record read 0 at %i
  1393. set @r1 @r0
  1394. record write 1
  1395. return
  1396.  
  1397. *del_lib
  1398. if %table=2 table define 9 fields char 40 int 4 char 50 char 80 char 255 int 1 file,
  1399. else table define 9 fields char 12 int 4 char 10 char 40 int 2 file
  1400. table copy %table to 9
  1401. record read 9 at %i
  1402. if @r9="" return
  1403. set $file @r9.1
  1404. table clear %table
  1405. table copy 9 to %table exclude @r9
  1406. table clear 9
  1407. return
  1408.  
  1409. ;
  1410. ;account setup dialog
  1411. ;
  1412.  
  1413. *setup
  1414. if $name="" $name='Enter Compuserve account number here'
  1415. if $phone="" $phone='Enter Compuserve phone number here'
  1416. if $pass<>"" perform decode, 
  1417. else $pass='Enter Compuserve password here'
  1418. if pos($downdir,":")=0 $downdir="Enter download directory here."
  1419. dialog (,,200,120) "Setup"
  1420.   message (2,10,55,10) 'Account:' 
  1421.   edittext (48,7,144,12) 144 ''  $name
  1422.   message (2,27,37,10) 'Password:'
  1423.   edittext (48,24,143,12) 143 '' $pass ;password
  1424.   message (2,44,57,10) 'Access #:'
  1425.   edittext (47,41,144,12) 144 '' $phone 
  1426.   message (2,61,54,10) 'Download to:'
  1427.   edittext (47,58,144,12) 144 '' $downdir
  1428.   button (48,78,64,11) "&Communications" perform dyna_set, settings communications, settings modem, save, goto setup
  1429.   button (120,78,64,11) "&File Transfers" perform dyna_set, settings texttransfers, settings binarytransfers, save, goto setup
  1430.   button (10,100,40,14) default '&Okay' resume
  1431.   button (150,100,40,14) cancel 'Cance&l' dialog cancel, perform encode, return
  1432. dialog end
  1433. wait resume
  1434.  
  1435.    $name=edittext(1)
  1436.    $pass=edittext(2)
  1437.    perform encode
  1438.    $phone=edittext(3)
  1439.    $downdir=trim(edittext(4))
  1440.    %l=length($downdir)
  1441.    if substr($downdir,%l,1)<>"\" set $downdir $downdir | "\"
  1442.    perform saveall
  1443.    return
  1444.  
  1445. *dyna_set
  1446. $name=edittext(1)
  1447. $pass=edittext(2)
  1448. perform encode
  1449. $phone=edittext(3)
  1450. $downdir=edittext(4)
  1451. dialog cancel
  1452. return
  1453.  
  1454. ;
  1455. ;routine to create account settings file
  1456. ;
  1457.  
  1458. *saveall
  1459. file delete "account.inf"
  1460. table define 11 TEXT "account.inf"
  1461. set @r11 $name
  1462. record write 11
  1463. set @r11 $pass
  1464. record write 11
  1465. set @r11 $phone
  1466. record write 11
  1467. set @r11 str(%mail)
  1468. record write 11
  1469. set @r11 str(%files)
  1470. record write 11
  1471. set @r11 str(%messages)
  1472. record write 11
  1473. set @r11 str(%send)
  1474. record write 11
  1475. set @r11 str(%upload)
  1476. record write 11
  1477. set @r11 $downdir
  1478. record write 11
  1479. set @r11 str(%sec0) 
  1480. record write 11
  1481. set @r11 str(%sec1)
  1482. record write 11
  1483. set @r11 str(%sec2)
  1484. record write 11
  1485. set @r11 str(%sec3)
  1486. record write 11
  1487. set @r11 str(%sec4)
  1488. record write 11
  1489. set @r11 str(%sec5)
  1490. record write 11
  1491. set @r11 str(%sec6)
  1492. record write 11
  1493. set @r11 str(%sec7)
  1494. record write 11
  1495. set @r11 str(%sec8)
  1496. record write 11
  1497. set @r11 str(%lib0)
  1498. record write 11
  1499. set @r11 str(%lib1)
  1500. record write 11
  1501. set @r11 str(%lib2)
  1502. record write 11
  1503. set @r11 str(%lib3)
  1504. record write 11
  1505. set @r11 str(%lib4)
  1506. record write 11
  1507. set @r11 str(%oldlist)
  1508. record write 11
  1509. table close 11
  1510. table clear 11
  1511. return
  1512.  
  1513. ;
  1514. ;password encode/decode routines
  1515. ;
  1516. *decode
  1517. return
  1518. ;set %pl num(substr($pass,1,2))
  1519. ;set $pass substr($pass,3,%pl)
  1520. ;set $pass decrypt($pass,"PASS")
  1521. ;return
  1522.  
  1523. *encode
  1524. return
  1525. ;set $pass encrypt($pass,"PASS")
  1526. ;set $pl str(length($pass))
  1527. ;set $pass $pl | $pass
  1528. ;return
  1529.  
  1530.  
  1531. *about
  1532. dialog (,,156,170) 'PCContact/Windows 0.96'
  1533. message (12,8,132,72) "    PCContact/Windows was written by Paul Bonner as part of PC/Computing's on-going Windows Project series. The entire project was produced using Future Soft Engineering's Dynacomm."
  1534. message (12,53,132,72)"    The PCContact/Windows script is intended for demonstration purposes only. No warranty is made concerning its fitness for any other purpose." 
  1535. message(12,100,132,72)"    For more information about Dynacomm, visit the Future Soft Engineering section of the WINAPA forum by typing 'GO CIS:WINAPA' at any Compuserve prompt."
  1536. button (60,150,,) "Okay" resume
  1537. dialog end
  1538. wait resume
  1539. dialog cancel
  1540. return
  1541.  
  1542.